Q1: What is happening?

On the afternoon of Wed Nov 7th PT,  we will be switching the GlassFish workspaces to require JDK 7 to build. Before the switch, it is optional. After the switch it is required.

Q2: What does that mean to me?

You need to install JDK 7 on your development machines and have it used by your builds:

Go, install it now. Use it for your builds now.

Q3: Will I still be able to build with JDK 6?

No

Q4: Will I be able to use Java SE 7 features and apis?

No for nucleus. Yes for appserver. Specifically:

Workspace
Source/Target
OK to Use Java 7 Features?
trunk/main/nucleus -source 1.6 -target 1.6
No
trunk/main/appserver -source 1.7 -target 1.7
Yes 

Q5: Will my build check if I use a Java 7 feature in the wrong workspace?

Your desktop build will catch if you use a Java 7 language feature (thanks to -source, -target). But it won't catch if you use an API new in Java 7. We will have a hudson job that builds with 1.6 that will catch Java 7 API use in -source 1.6 workspaces.

We know this is less than ideal, so we are working on a solution to catch the use of Java 7 API's when you build -- but doing that has turned out to be trickier than first thought.

Q6: What minimum version of JDK 7 do I need?

We strongly recommend JDK 7u9 or newer due to security fixes, etc. (although 7u2 or newer will probably work).

Q7: I'm on a Mac, what do I do?

 Oracle now provides Java 7 downloads for the Mac. See Q2.

Q8: Do I need to change MAVEN_OPTS or anything else?

No, as far as we know you should not need to change your MAVEN_OPTS settings.

Q9: Why are we doing this?

Java EE 7 requires support for Java SE 7. Plus moving to Java 7 is a long time coming.

Q10: Why can't the '-source 1.6' workspaces just continue to require JDK 1.6?

That would impose a bigger inconvenience for the developer as they would need to maintain two different JDK's on their desktop to build.

Q11: Why do some workspaces require '-source 1.6'

Nucleus is consumed by some projects that require 1.6 support, therefore it needs to continue to support Java 6. At some point those requirements may be lifted, at which point we may remove the 1.6 requirement.